package com.penghaisoft.microwms.material.web.insidewarehouse.service;


import java.util.List;

import com.penghaisoft.microwms.common.data.model.RawRequisition;
import com.penghaisoft.microwms.common.dto.ConRawCondDto;
import com.penghaisoft.microwms.common.dto.MesConRawReqDto;
import com.penghaisoft.microwms.common.dto.RawStorageDto;
import com.penghaisoft.microwms.common.dto.Resp;
import com.penghaisoft.microwms.common.page.Pager;
import com.penghaisoft.microwms.common.wms.model.RawContractChange;
import com.penghaisoft.microwms.common.wms.model.RawCountingDifference;
import com.penghaisoft.microwms.common.wms.model.RawCountingRecords;
import com.penghaisoft.microwms.common.wms.model.RawCountingTask;
import com.penghaisoft.microwms.common.wms.model.RawLockLog;
import com.penghaisoft.microwms.common.wms.model.RawStorageSn;


/** 
* @ClassName: IMaterialInsideService 
* @Description: TODO
* @author jzh
* @date 2018年5月17日 下午1:48:10  
*/
public interface IMaterialInsideService {

	Pager<RawStorageSn> findRawStorageSnByCondition(int page, int rows, RawStorageSn rawStorageSn);
	
	Pager<RawStorageSn> queryStorageChangeList(int page, int rows, RawStorageSn rawStorageSn);

	List<RawStorageSn> findRawStorageSnByCode(RawStorageSn rawStorageSn);

	Pager<RawStorageDto> findListByCondition(int page, int rows, RawStorageDto condition);
	
	Pager<RawStorageDto> findListByConditionHZ(int page, int rows, RawStorageDto condition);
	
	List<RawStorageDto> queryStorageDtoList(RawStorageDto condition);
	
	List<RawStorageDto> queryStorageDtoListHZ(RawStorageDto condition);

	Resp updateRawStorageSnStatus(List<RawStorageSn> list, RawLockLog rawLockLog);

	Pager<RawLockLog> findLockLogByCondition(int page, int rows, RawLockLog rawLockLog);

	Pager<RawCountingTask> findCountingTask(int page, int rows, RawCountingTask rawCountingTask);

	Resp createCountingTask(RawCountingTask rawCountingTask);

	Resp deleteCountingTask(RawCountingTask rawCountingTask);

	List<RawCountingRecords> findRawCountingRecordsByCode(RawCountingRecords rawCountingRecords);

	Pager<RawCountingDifference> findRawCountingDifferenceByCondition(int page, int rows,
			RawCountingDifference rawCountingDifference);
	
	/** 
	 * @Title createRawStorageSn
	 * @Description 库存明细新增【黑白料入库】
	 * @author luoteng
	 * @date 2018年6月4日:下午1:41:26
	 * @param rawStorageSn
	 * @return int
	 */
	public Resp createRawStorageSnIn(RawStorageSn rawStorageSn);
	
	/** 
	 * @Title createRawStorageSn
	 * @Description 库存明细新增【黑白料出库】
	 * @author luoteng
	 * @date 2018年6月4日:下午1:41:26
	 * @param rawStorageSn
	 * @return int
	 */
	public Resp createRawStorageSnOut(RawStorageSn rawStorageSn);
	
	/** 
	 * @Title updateRawStorageSn
	 * @Description 库存明细修改
	 * @author luoteng
	 * @date 2018年6月4日:下午1:42:15
	 * @param rawStorageSn
	 * @return int
	 */
	public int updateRawStorageSn(RawStorageSn rawStorageSn);
	
	/** 
	 * @Title updateRawStorageSnOut
	 * @Description 库存明细修改【黑白料出库】
	 * @author luoteng
	 * @date 2018年7月13日:上午11:05:41
	 * @param rawStorageSn
	 * @return Resp
	 */
	public Resp updateRawStorageSnOut(RawStorageSn rawStorageSn);
	
	/** 
	 * @Title findRawStorageSnWhiteBlackIn
	 * @Description 黑白料入库明细
	 * @author luoteng
	 * @date 2018年6月4日:下午4:41:03
	 * @param page
	 * @param rows
	 * @param rawStorageSn
	 * @return Pager<RawStorageSn>
	 */
	public Pager<RawStorageSn> findRawStorageSnWhiteBlackIn(int page, int rows, RawStorageSn rawStorageSn);
	
	/** 
	 * @Title findRawStorageSnWhiteBlackOut
	 * @Description 黑白料出库明细
	 * @author luoteng
	 * @date 2018年6月4日:下午4:41:14
	 * @param page
	 * @param rows
	 * @param rawStorageSn
	 * @return Pager<RawStorageSn>
	 */
	public Pager<RawStorageSn> findRawStorageSnWhiteBlackOut(int page, int rows, RawStorageSn rawStorageSn);
	
	/** 
	 * @Title findRawStorageSnAbs
	 * @Description 查询库存明细列表（数量取绝对值）
	 * @author luoteng
	 * @date 2018年6月4日:下午5:28:41
	 * @param rawStorageSn
	 * @return List<RawStorageSn>
	 */
	public List<RawStorageSn> findRawStorageSnAbs(RawStorageSn rawStorageSn);


	/**
	 * 根据id查询条码的合同号（只查合同号）
	 * @wzhg 1865
	 * @param rawStorageSn
	 * @return
     */
	public RawStorageSn findById(RawStorageSn rawStorageSn);

	/**
	 * 根据id修改合同号(可以置为空可以修改为其他值)
	 * @wzhg 1865
	 * @param rawStorageSn
	 * @return
     */
	public Resp updateById(RawStorageSn rawStorageSn);

	/**
	 * @wzhg 1865
	 * 根据条码号查询条码信息 用list.get(0) /方便查错
	 * @param rawStorageSn
	 * @return
     */
	public List<RawStorageSn> findByCode(RawStorageSn rawStorageSn);
	
	/** 
	 * @Title queryAvailAmountList
	 * @Description 查询可用数量
	 * @author luoteng
	 * @date 2018年7月16日:下午1:27:04
	 * @param condition
	 * @return List<RawStorageDto>
	 */
	public List<RawStorageDto> queryAvailAmountList(RawStorageDto condition);
	
	/** 
	* @Title: batchUpdateContact 
	* @Description: 批量更新合同号
	* @param @param rawStorageSn
	* @param @return  参数说明 
	* @return Resp    返回类型
	* @author luoteng 
	* @date 2018年8月14日 上午10:08:21 
	* @throws 
	*/
	public Resp batchUpdateContact(RawStorageSn rawStorageSn);

	Resp updateBySelect(RawStorageSn rawStorageSn);
	/** 
	* @Title: findRawContractChange 
	* @Description: 合同号修改记录
	* @author luoteng 
	* @date 2018年8月14日 上午10:08:21 
	* @throws 
	*/
	Pager<RawContractChange> findRawContractChange(int page, int rows, RawContractChange rawContractChange);
	
	List<RawContractChange> queryRawContractChangeList(RawContractChange rawContractChange);

	/** 
	* @Title: findconRawRequired 
	* @Description: 原材料销售报表 
	* @param @param conRawCondDto
	* @param @return  参数说明 
	* @return List<MesConRawReqDto>    返回类型
	* @author jzh 
	* @throws 
	*/
	List<MesConRawReqDto> findconRawRequired(ConRawCondDto conRawCondDto);

	/** 
	* @Title: queryStorageSnExp 
	* @Description: 原材料明细导出) 
	* @param @param rawStorageSn
	* @param @return  参数说明 
	* @return List<RawStorageSn>    返回类型
	* @author jzh 
	* @throws 
	*/
	List<RawStorageSn> queryStorageSnExp(RawStorageSn rawStorageSn);

	/** 
	* @Title: findKulingOff 
	* @Description: 库龄超期预警 
	* @param @param page
	* @param @param rows
	* @param @param rawStorageSn
	* @param @return  参数说明 
	* @return Pager<RawStorageSn>    返回类型
	* @author jzh 
	* @throws 
	*/
	Pager<RawStorageSn> findKulingOff(int page, int rows, RawStorageSn rawStorageSn);
	
	List<RawRequisition> queryRawRequisitionNo(RawRequisition rawRequisition);
}
